<?  
$Page->title = 'Редактирование страницы';

//pr($data);

// show error message
if(!empty($Page->error)) print "<font color=#ff0000>$Page->error </font>"; 


// добавляет в верхнее подменю ссылку на посмотр текущей страницы на сайте 
Admin::add_page(array(
			'id'		=> 'view_page',
			'url'		=> $data->url,
			'img'       => Admin::$images_url .'/viewpage-22.png',
			'title'     => 'Посмотреть на сайте',
            'tooltip'	=> 'Посмотреть страницу на сайте (в новом окне)',
			'target'	=> '_blank',
			'position'	=> 60,
			'menu'		=> array('toolbar_pages'),
		));


?>


<form name="page_form" method="post" enctype="multipart/form-data" action="" class=form_auto  >
	
<nobr>
<?Admin::show_submits()?>
</nobr>
	
	<? 
		//pr($data);
		
		View::field(array(
			'label'	=> 'Название',
			'desc'	=> 'Название используется для пункта меню и для заголовка текста на странице. Однако, если в поле "Содержимое" используется Заголовок 1го уровня (H1), то обычно он и используется в качестве заголовка текста, вместо стандартного названия страницы.',
			'type'	=> 'text',
			'name'	=> 'data[title]',
			'value'	=> $data->title,
			'required'=>1,
			
		));

		

?>

<script>


function urlword(title)
{
	// translit RU to EN
	title = translit(title)
	//return title;
	
	//strtolower
	title = (title+'').toLowerCase()
	
	//strip_tags
	title = title.replace(/(<\/?[\S][^>]*>)/gi , '')
	
	// strip quotes
	title = title.replace(/[\'\"]+/g,'');
	
	//replace noncorrect chars 2 underlines
	title = title.replace(/[^a-zA-Z0-9\~\-\[\]_]+/g,'_');
	
	// no double underlines
	title = title.replace(/[_-]+/g,'_')
	
	// trim underlines
	title = title.replace(/^_+/g,'').replace(/_+$/g,'');
	
	
	return title;
}

 
function translit(str)
{
	var str = str.split("");
		for (var i=0,strL=str.length; i<strL; i++) 
			if (translit.ru2en[str[i]])
				str[i] = translit.ru2en[str[i]]
				
	return str.join("");
  
}


translit.init = function()
{
	translit.ru_str = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя" ;

	translit.en_str = [
'A','B','V','G','D','E','YO','ZH','Z','I','Y','K','L','M','N','O','P','R','S','T',
'U','F','H','TS','CH','SH','SHCH','','I','','E','YU','YA',
'a','b','v','g','d','e','yo','zh','z','i','y','k','l','m','n','o','p','r','s','t','u','f',
'h','ts','ch','sh','shch','','i','','e','yu','ya'
	];	


	translit.ru2en = {};
	for (var i = 0, l = translit.ru_str.length; i < l; i++)
		translit.ru2en[translit.ru_str.charAt(i)] = translit.en_str[i];

	translit.init_done = true;
} 
translit.init()
  
</script>


<?	
		
/* Нестандартное адресное слово */
	View::field(array(
			'type'	=> 'text',
			'label'	=> '
			<a href=# 
				title="создать адресное слово из названия страницы"
				onclick=\'$("data[urlword]").value = urlword($("data[title]").value); return false;\'
				style="float:right;font-size:14px; color2:#6A88B5; text-decoration2:none; " 
				
			  >создать из названия</a>
			Адресное слово',
			'desc'	=> 'Адресное слово используется для формирования URL-адреса страницы. Например, если для страницы "Новости" задать адресное слово "novosti", то её URL-адрес будет: "http://site.ru/novosti/". Если поле оставить пустым, то адресное слово будет создано путем транслитерации названия.',
						
			'name'	=> 'data[urlword]',
			'value'	=> $data->urlword,
			
			));	
	
	
		View::field(array(
			'label'	=> 'Содержимое',
			'type'	=> 'wysiwyg',
			'name'	=> 'data[content]',
			'value'	=> $data->content,
		));
	?>
	
	
    
    <div class="menudiv" >
	
	<p class="text1"><?php echo $lang['page']['widgets']?>    <a class="text4 dashed" href=# onclick="showHide('help_widget'); return false;" >справка</a></p>
	<p class="text4" style='display:none;' id=help_widget><?php echo $lang['page']['widgets_desc']?></p>
		
		
		
		<div id=widgets_table style='width:100%;'>
		<table class=border1px  width=100% >
		<tr>
		<th> виджет
		<th> переменная
		<th> действия
		<th> параметры вызова
		
		
		<?// заглушка для правильногой работы формы в случае удаления последнего виджета ?>
		<input type=hidden name='data[widgets]' value='' >
		
		<?	
			if ($data->widgets) //pr($data->widgets);
			foreach ($data->widgets as $widget_id => $widget_query)
			{
				$widget_title = Core::$Widgets[$widget_id]->title;
				?>
				<tr id=<?=$widget_id?>_tr >
				<td class=text1> <?=$widget_title ?>
				<?
				
				// выводим ссылку на редактирование содержимого виджета
				if ($edit_url = val(Core::$Widgets[$widget_id]->edit_url))
				{
					$edit_url = str_replace('%page_id%', val($data->id), $edit_url);
					//$edit_text = '[ред]';
					$edit_icon = MODULES_URL. '/admin/design/img/edit16.png';
					// pr($edit_icon); 
					
					echo "
					<a href='$edit_url' 
					title='редактировать содержимое виджета $widget_title'
					><IMG src='$edit_icon' align=bottom ></a>
					";
				}
				?>
				
				
				
				<?
				//pr();
				?>
				
				
				<td align=center> <?=str_replace('%widget_id%', $widget_id, Site::$Config->widget_var);?>
				<td align=center> 
				<a href=# class=dashed 
				onclick="widget_settings('<?=$widget_id?>'); return false;"
				>настроить</a> |	
				<a href=# class=dashed 
				onclick = "widget_del('<?=$widget_id?>', '<?=$widget_title?>'); return false;"
				>удалить</a>
				
				
				<td class=widget_params> 
				<input type=text name='data[widgets][<?=$widget_id?>]'
					id='widgetquery_<?=$widget_id?>' 
					value='<?=html($widget_query)?>' 
					title='<?=html($widget_query)?>' 
				>
				<?
			
			}
		
		?>
		
		</table>
		</div>
		
		
		<textarea id=widget_tr_template style='display:none'>
			<tr id="%widget_id%_tr" > 
					<td class=text1>%widget_title% 
					<td><?=Site::$Config->widget_var?> 		
					<td> 
					<a href=# class=dashed 
					onclick="widget_settings('%widget_id%'); return false;"
					>настроить</a> |    
					<a href=# class=dashed 
					onclick = "widget_del('%widget_id%', '%widget_title%'); return false;"
					>удалить</a>   
					
					<td class=widget_params> 
					<input  type=text name="data[widgets][%widget_id%]" 
							id="widgetquery_%widget_id%" value="%widget_query% "  
							> 
			</tr>				
		</textarea>
		
		
		<span class=text6 >
		<a href=# class=dashed 
		onclick="show('widget_form'); hide('widget_button_add', true); hide('widget_button_save'); hide('widget_settings_frame'); return false;" 
		>Добавить виджет</a></span>
		
		
		
		<div id=widget_form style='display:none;'>
		<br>
	
		<select id=widget_select_element onchange="widget_select(this.value);" >
		 <option value="" >--- <?=$lang['page']['widget_select']?> ---
		<?
		foreach (Core::$Widgets as $widget_id => $widget)
		{
			if(val($widget->hidden)) continue;
			if (!isset($data->widgets[$widget_id]))
				echo "<option value='$widget_id' >$widget->title";
			else	
				echo "<option value='$widget_id' class=widget_active >$widget->title";
		}	
		?>
		 
		</select >
		<style>
		OPTION.widget_active {color:#aaa} 
		
		TR.widget_active TD {background:#99aacc; }
		TR.widget_active INPUT {background:#ACB6C9; }
		
		TR.widget_active TD, 
		TR.widget_active A,
		TR.widget_active A:hover {color:#fff; border-color:#fff;}
		#widget_form .widget_button {width:150px;}
		
		TD.widget_params {text-align:center;}
		TD.widget_params INPUT {font-size:12px; width:160px;}
		</style>
		
		
		

	

	
	
		
		<iframe id='widget_settings_frame' src='/admin/widget_settings/?lang=русский'
		frameborder=0 scrolling="no"
		style='width:100%;height:10px; margin-top:10px; border:0px solid #d7d7d7; ' 
		onload='autoIframe(this);'
		
		onload2="/*fitIFrame(this); return; alert(1);*/ fId='widget_settings_frame'; $(fId).style.height = '10px'; fWin=getFrameWin(fId); fHeight=getDocumentHeight(fWin);      /*alert(fHeight); */  $(fId).style.height = fHeight+'px';  "
		
		></iframe>
		
		


<div style='padding:5px 0; '>	
<input id=widget_button_add  class=widget_button type=button value="добавить" onclick='widget_add()'>
<input id=widget_button_save  class=widget_button type=button value="применить" onclick='widget_save()'>
<input id=widget_button_hide  class=widget_button  type=button value="закрыть" onclick='widget_settings_close()'>	


</div>
		
		</div>
		
<script>

// кроссбраузерный removeNode		
if( window.Node && !Node.prototype.removeNode ) 
{
	Node.prototype.removeNode = 
	function(remove) 
	{
		var range;
		return !! this.parentNode && ( remove ? this.parentNode.removeChild(this) :		   (
			this.nodeType == 1 && (
				range = document.createRange(),
				range.selectNodeContents(this),
				this.parentNode.replaceChild(range.extractContents(), this)
			)
		));
	}
}

// возвращает объект OPTIONS в списке SELECT с заданным value
function find_select_value(select_element_id , value)
{
	var sel = $(select_element_id)
		for (var i=0; i< sel.options.length; i++)
			if (sel.options[i].value == value)
				return sel.options[i]
}


// извлекает значние поля (INPUT, SELECT, TEXTAREA), не зависимо от его типа и атрибутов
function get_field_value(oField)
{
	tag = oField.tagName;
	type= oField.type;

	if (tag=='INPUT' && (type=='checkbox' || type=='radio'))
		return oField.checked ? oField.value : '';	
	
	
	if (tag=='SELECT'  && oField.multiple  )
	{
		selected = new Array();
		  for (var i = 0; i < oField.options.length; i++)
			if (oField.options[ i ].selected 
				&& oField.options[ i ].value
				)
				selected.push(oField.options[ i ].value);
		
		return selected.length ? selected : '';
	}	  

	
	return oField.value;
}


widgets_count = <?=$data->widgets? count((array)$data->widgets):0 ?>; 
if (!widgets_count) hide('widgets_table')
// setTimeout("hide('widgets_table')",100)
		
// удаляет строку виджета из таблицы виджетов на странице		
function widget_del(widget_id, widget_title)
{
	ok = confirm( 'Вы действительно хотите удалить со страницы виджет "'
					+ widget_title
					+ '"?'
				)
	if (!ok) return;
	
	tr = $(widget_id + '_tr')
	tr.removeNode(true)
	
	
	var
	opt = find_select_value('widget_select_element' , widget_id)
	opt.className = ''
	
	widget_select()
	widget_settings_close()
	
	widgets_count--
	if (widgets_count==0) hide('widgets_table')
}



// сохраняет измененные параметры виджета
function widget_save()
{
	var wInput = $('widgetquery_' + $('widget_select_element').value);
	
	// в параметрах виджета не позволяем сохранять кавычки, так как они фильтруются для безопасности
	var params = get_widget_params().replace(/["']+/g, "" )
	
	wInput.value = params
	wInput.title = params
	
	widget_settings_close()
}

// извлекает настройки виджета и добавляет новую строку в таблицу виджетов  
function widget_add()
{
	// получаем настройки виджета 
	var widget_query = get_widget_params();
	//alert(widget_query); return
	
	var sel = $('widget_select_element')
	var widget_id = sel.value;
	if (!widget_id) return
	var widget_title = sel.options[sel.selectedIndex].text;
	sel.options[sel.selectedIndex].className = 'widget_active'
	
	widgets_count++
	if (widgets_count) show('widgets_table')
		
	// получаем HTML код таблицы
	var tbl = $('widgets_table')
	var tbl_code = tbl.innerHTML
	
	// подготавливаем код для новой строки 		
	//tr_new = $('widget_tr_template').innerHTML
	//tr_new = $('widget_tr_template').innerText
	tr_new = $('widget_tr_template').value

//alert(tr_new); //return
	tr_new	= tr_new.replace(/<\/?tbody>/gi, '')
	tr_new	= tr_new.replace(/%widget_id%/g, widget_id)
	tr_new	= tr_new.replace(/%widget_query%/g, widget_query)
	tr_new	= tr_new.replace(/%widget_title%/g, widget_title)
	
//alert(tr_new); //return
	
	// создаём HTML-код таблицы с добавленным кодом новой строки            
	tbl_code = tbl_code.replace(/<\/TBODY>/i, tr_new +'</TBODY>');
	
	tbl.innerHTML = tbl_code
	
	widget_select(widget_id)
	//widget_settings_close()
	
}

// отображает форму с настройками виджета + ввыделяет-активижирует виджет
function widget_settings(widget_id)
{
	show('widget_form'); //alert('show');
	show('widget_settings_frame');
	widget_select(widget_id)
}

// закрывает настрйоки виджета и снимает выделение
function widget_settings_close()
{
	widget_select()
	hide('widget_form'); 
}


widget_active_id=null

// выделяет пункт в выпадающем списке виджетов и, если он используется на странице, то и в таблице виджетов, + отображает соответствующую форму с настройками виджета
function widget_select(widget_id)
{
	
	
	var sel = $('widget_select_element')
	
	
	if (!widget_id)
	{
		sel.selectedIndex = 0
		widget_active = false
	}
	else
	{
		var
		opt = find_select_value('widget_select_element' , widget_id)
		opt.selected = true
		widget_active = opt.className=='widget_active'? true:false
		
		
	}
	
	
	
	if (widget_active_id && $(widget_active_id + '_tr'))
	{
		$(widget_active_id + '_tr').className=''
		widget_active_id = null
	}	
	
	
	//alert(widget_active)
	
	if (widget_active)
	{
		hide('widget_button_add'); 
		show('widget_button_save', true); 
		$(widget_id + '_tr').className='widget_active'
		widget_active_id = widget_id
		
	
		
	}
	else if(widget_id)
	{
		hide('widget_button_save'); 
		show('widget_button_add', true); 
		
	}
	else
	{
		hide('widget_button_add')
		hide('widget_button_save')
		
	}
	//if (!widget_id) return
	
	var url = '/admin/widget_settings/'+widget_id; 
	
	var wquery = $('widgetquery_'+widget_id)
	

	if ( wquery )  
	{
		query = wquery.value
		url += '?'+query;
		//alert(url);
		
	}
	
	show('widget_settings_frame');
	
	$('widget_settings_frame').src=url;  
	
	//alert(widget_id)
}	

// извлекает настройки виджета из фрейма с формой настроек	
function get_widget_params()
{
	result=''
	fDoc = getFrameDoc('widget_settings_frame')
	elements = fDoc.getElementsByTagName('*')
	
	for (var i=0;i< elements.length; i++)
	{
		if (elements[i].name )
		{	
			v = get_field_value(elements[i]) 
			if (!v) continue
			
			if (typeof(v)=='object')
			{
				for (var k=0; k< v.length; k++)
					result+=  '&'+elements[i].name +'=' + (v[k])
					//result+=  '&'+elements[i].name +'=' + urlencode(v[k])
			}
			else
				result+=  '&'+elements[i].name +'=' + (v)
				//result+=  '&'+elements[i].name +'=' + urlencode(v)
		}	
	}
	
	return result
}

</script>
		
		

	</div>
	
	<div id=menu_options class="menudiv" >
		
		
		
		
		
		
		<p class="text1">Размещение в навигации</p>
		
		<!-- <p class="text4" ><?php echo $lang['page']['options']; ?></p> -->
		
		
        
        <TABLE cellspacing=0 cellpadding=0 border=0 style=''  >
        
        <TR>
        <TD> 
        <label for="page_parent_id">
		&nbsp;&nbsp;Подстраница для:
		</label>
        
        <TD>&nbsp;&nbsp;
        <TD>
        <select name="data[parent_id]" id=page_parent_id>
        <option value="" >--- [ корень сайта ] ---</option>
        
            <?=Admin::list_pages_options(array('select_id'=> ( val($data->id)? $data->parent_id : intval(GET('parent_id'))), 'without_id'=>$data->id, )); 
            ?>
        
		</select>
		      
        
        
        <TR><TD height=10>
        <TR>
        <TD >&nbsp; <?=$lang['page']['visible']?>:
        
        <TD>&nbsp;&nbsp;
        <TD> 
        
        <input class=checkbox  type="checkbox" name="data[show]" id="page_show" value="1"
            <?php 
            
            $visible = $data->show; // show page in main menu
            if (isset($_POST['page']['show']))  $visible = $_POST['page']['show'];
            
            if ($visible) echo'checked="checked"'; 
            ?> 
         />
        
		
        <? // Размещать в меню
		
        if (!empty(Site::$Theme->menu_list) )
        {
			?>
			
			<TR><TD height=10>
			<TR>
			<TD valign=top >&nbsp; <?php echo $lang['page']['show_in_menu']; ?>:
			<TD>&nbsp;&nbsp;<TD> 
			
			<?
			//pr($_POST);
			
			$menu_list = Site::$Theme->menu_list;
            
			$menu_checked = isset($_POST['page']['show_in_menu'])?
				$_POST['page']['show_in_menu'] :
				$data->show_in_menu;
            if (!$menu_checked) $menu_checked = array();
			
        
        foreach ($menu_list as $menu_id=>$menu_title)
        {
            $checked = in_array($menu_id, $menu_checked)  ? ' checked ' : ''; 
            //$checked = !empty($menu_checked[$menu_id])? ' checked ' : '';
			
			
            echo "
            <div>
            <input class=checkbox type=checkbox name='data[show_in_menu][$menu_id]' id='page_show_in_menu_{$menu_id}' 
             value='$menu_id' $checked >
             <label for='page_show_in_menu_{$menu_id}'><b2>$menu_title</b> 
			 
			
			 
			 </label> <span class=text4 title='menu_id'>($menu_id)</span>
            </div> 
            ";
        }
        }
        ?>
        
         
        
        </TABLE>
        	
		
	
	
	<?=View::field(array(   /* Картинка */
			'type'	=> 'file',
			'label'	=> 'Картинка',
			'name'	=> 'data[img]',
			'value'	=> val($data->img),
	));?>
	
	<br/>

	<? /* Нестандартная ссылка */
	View::field(array(
			'type'	=> 'text',
			'label'	=> 'Нестандартная ссылка',
			'desc'	=> 'Если вам нужно, чтобы пункт в меню (для этой страницы) указывал на какую-то другую веб-страницу или внешний ресурс, укажите здесь его URL-адрес. (При этом стандартное содержимое этой страницы, конечно же,  станет недоступно из меню.)',
			'name'	=> 'data[url_rewrite]',
			'value'	=> $data->url_rewrite,
			));	
			
			?>
			
	
<br/>

<?
			
	View::field(array(
			'type'	=> 'text',
			'label'	=> 'Нестандартный TITLE',
			'desc'	=> 'Нестандартный текст для тега TITLE (заголовок страницы). Обычно в TITLE выводиться заголовок текста или название страницы.',
			'name'	=> 'data[page_title]',
			'value'	=> $data->page_title,
			));	
			
	?>

	

	
	
<br/>
<div style='width:100%'>
<? /* Нестандартное адресное слово */
	View::field(array(
			'type'	=> 'textarea',
			'label'	=> 'Описание страницы',
			'desc'	=> 'Используется для мета-тега Description и иногда в карте сайта.',
			'name'	=> 'data[page_description]',
			'value'	=> $data->page_description,
			));	
	?>
</div>	
	



	
	<?
	$tpls		= array(0=>'page.php (по умолчанию)');
	$tpls_tmp 	= file_list(Site::$Config->design_dir);
	
	foreach  ($tpls_tmp as $tpl)
		if (substr($tpl, 0, 5)=='page ')
			$tpls[$tpl]=$tpl;
	
	// pr($tpls);
	
	
	View::field(array(   /* Шаблон страницы */
				'type'	=> 'select',
				'label'	=> 'Шаблон страницы',
				'desc'	=> 'Шаблон дизайна для страницы. По умолчанию используется файл "sites/&lt;site_id&gt;/design/page.php" ',
				'name'	=> 'data[page_template]',
				'value'	=> val($data->page_template),
				'options'=> $tpls,
				));
	?>
	
	
	
	<br/>

	</div> <!--/div id=menu_options class="menudiv" -->		
	
	
	
	
	
	
	<nobr>
	<?Admin::show_submits()?>
    </nobr>
    
    
	
</form>